package com.devunion.bogdan.model.project.dao;

import com.devunion.bogdan.model.project.Page;
import com.devunion.bogdan.model.project.Project;
import com.devunion.bogdan.model.project.Paper;
import com.devunion.bogdan.model.project.info.ProjectInfo;
import com.devunion.bogdan.persistence.Dao;

import java.util.Date;
import java.util.List;
import java.util.Set;

/**
 * DAO for {@link com.devunion.bogdan.model.project.Project}.
 *
 * @author Viktar Liaskovich
 */
public interface ProjectDao extends Dao<Project> {
    List<ProjectInfo> loadProjectInfos();

    List<Page> loadPages(Long projectId, Long paperId, String annotationType, String annotationText);

    Set<Project> getProjectByCriteria(String firstName, String lastName, String projectName, String title, String type,
                                      String language, Number pagesMin, Number pagesMax, Date creationMin, Date creationMax,
                                      Date exactMin, Date exactMax, Date endMin, Date endMax, String annotationType, String annotationText);

    Set<Paper> getProjectPapersByCriteria(Long id, String firstName, String lastName, String title, String type, String language,
                                          Number pagesMin, Number pagesMax, Date creationMin, Date creationMax, Date exactMin,
                                          Date exactMax, Date endMin, Date endMax, String annotationType, String annotationText);
}
